package cn.org.xiaoweiba.graduationdesign.bookmall.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * knife4j 配置类
 */
@Configuration
public class Knife4jConfig {

    /**
     * knife4j 接口文档对象
     *
     * @return 接口文档对象
     */
    @Bean
    public OpenAPI openAPI() {
        // 配置接口文档信息对象
        Info apiInfo = apiInfoConfig();
        // 接口文档对象
        OpenAPI openAPI = new OpenAPI();
        // 配置接口文档的相关信息
        openAPI.info(apiInfo);
        return openAPI;
    }

    /**
     * 配置接口文档信息（如：接口文档标题、版本等）
     *
     * @return 接口文档信息配置对象
     */
    private Info apiInfoConfig() {
        // 配置接口文档发布者信息对象
        Contact contact = contactConfig();
        // 创建接口文档信息配置对象
        Info apiInfo = new Info();
        // 接口文档标题
        apiInfo.setTitle("小尾巴书城 - API 接口文档");
        // 接口文档描述
        apiInfo.setDescription("小尾巴书城服务端程序对应的 API 接口文档");
        // 文档发布者信息
        apiInfo.setContact(contact);
        // 文档版本信息
        apiInfo.setVersion("1.0.0");
        return apiInfo;
    }

    /**
     * 配置接口文档信息中的文档发布者信息
     *
     * @return 文档发布者信息配置对象
     */
    private Contact contactConfig() {
        // 创建文档发布者信息配置对象
        Contact contact = new Contact();
        // 发布者名称
        contact.setName("小尾巴");
        // 发布者网站链接地址
        contact.setUrl("http://124.71.109.83");
        // 发布者邮箱
        contact.setEmail("1974498278@qq.com");
        return contact;
    }

}
